package com.example.demo.service.requestRvo.annotation;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;

@Target({ElementType.TYPE, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME) //会在class文件中有显示
@Documented
@Inherited //使注解具有继承性
public @interface UseField {

    String name() default "";


    /**
     * label 和 value 互为别名 便于使用默认值
     * eg: @UseField(label="用户名")
     * 等效于
     *
     * @return
     * @UseField("用户名")
     */
    @AliasFor("label")
    String value() default "";

    @AliasFor("value")
    String label() default "";


    FormType type() default FormType.TEXT;

    //    type: 'TIME'|'DATETIME'|'DATE'|'TEXT'|'IMAGE'|'LONGTEXT'|'SLOT'
    FormType tableType() default FormType.TEXT;


    /**
     * 列表唯一标识
     * eg: @UseField(listName = "project")
     * 将会生成 projectFieldList 用于form表单
     * projectTableFieldList 用于table表单
     *
     * @return
     */
    String listName() default "";


}
